﻿using System.ServiceModel;
using Director.DomainModels;

namespace Director
{
	public interface IDirectorServiceCallback
	{
		[OperationContract(IsOneWay = true)]
		void ServiceStateChanged(EServiceState newState);

		[OperationContract(IsOneWay = true)]
		void OnServiceError(string errorMessage);

		[OperationContract(IsOneWay = true)]
		void OnServiceLog(string logMessage);

		[OperationContract(IsOneWay = true)]
		void CandlesUpdated(int securityId, int timeFrameLength);

		/// <summary>
		/// Например получен новый трейд, изменилась позиция или еще что
		/// </summary>
		/// <param name="kind"></param>
		/// <param name="id">необязательный параметр, просто для уточнения запроса, для трейда ID трейда</param>
		[OperationContract(IsOneWay = true)]
		void DataReceived(EDataKind kind, int id);

		[OperationContract(IsOneWay = true)]
		void OnNewTrade(Trade trade);

		[OperationContract(IsOneWay = true)]
		void OnNewOrder(Order order);
	}
}